/*
 * @Description: test
 * @Author: rendc
 * @Date: 2025-10-17 09:09:21
 * @LastEditors: rendc
 * @LastEditTime: 2025-10-17 14:55:15
 */
// 基本数据类型
console.log('🤡 CC - hello');
console.log('🤡 CC - a:', a);// undefined
console.log('🤡 CC - b:', b);// undefined
var a = 10;
// 这里是将a的值10赋值给了b
var b = a;
console.log('🤡 CC - a:', a);// 10
console.log('🤡 CC - b:', b);// 10
b = 20;
console.log('🤡 CC - a:', a);// 10
console.log('🤡 CC - b:', b);// 20

// 引用数据类型
var o1 = {
  name: "o1",
  age: 18,
}
// 这里是将o1的引用地址赋值给了o2 - 浅拷贝
var o2 = o1;
console.log('🤡 CC - o1:', o1);
console.log('🤡 CC - o1.name:', o1.name);// o1
console.log('🤡 CC - o2.name:', o2.name);// o1
o2.name = "o2";
console.log('🤡 CC - o1.name:', o1.name);// o2
console.log('🤡 CC - o2.name:', o2.name);// o2
// 深拷贝
// 序列化与反序列化
// JSON.stringify();
// JSON.parse();
// Object.assign();
// 第三方工具库
// 自己递归处理
var o3 = {
  name: o1.name,
  age: o1.age,
}
console.log('🤡 CC - o1:', o1);
console.log('🤡 CC - o3:', o3);
o3.name = "o3";
console.log('🤡 CC - o1:', o1);
console.log('🤡 CC - o3:', o3);

// 类型判断
var flag = false;
console.log('🤡 CC - typeof flag:', typeof flag);
var flag_type = typeof flag;
console.log('🤡 CC - flag_type:', flag_type);
if (flag_type == 'boolean') {
  console.log("flag_type是boolean类型");
  if (flag) {
  }
}
var s = '123';
console.log('🤡 CC - typeof s:', typeof s);
var num = 0b01;
// var num = 001;
var num = 0x01;
var num = 12;
console.log('🤡 CC - typeof num:', typeof num);
var flag = true;
console.log('🤡 CC - typeof flag:', typeof flag);
var n = null;
console.log('🤡 CC - typeof n:', typeof n);
console.log('🤡 CC - typeof null:', typeof null);
var u = undefined;
console.log('🤡 CC - typeof u:', typeof u);

var obj = null;
console.log('🤡 CC - typeof obj:', typeof obj);
var obj2 = {};
console.log('🤡 CC - typeof obj2:', typeof obj2);
var obj3 = {
  name: "obj3",
};
console.log('🤡 CC - typeof obj3:', typeof obj3);
var arr = [];
console.log('🤡 CC - typeof arr:', typeof arr);
var arr1 = [1, 2, 3];
console.log('🤡 CC - typeof arr1:', typeof arr1);

// var sum = function (a, b) {
//   return a + b;
// };
function sum (a, b) {
  return a + b;
}
console.log('🤡 CC - typeof sum:', typeof sum);

// 算术运算符
// +

console.log('🤡 CC - 1+2:', 1 + 2); // 3
console.log('🤡 CC - 1+2:', 1 + "2"); // 12
console.log('🤡 CC - 1-2:', 1 - 2); // -1
console.log('🤡 CC - 1-2:', 1 - "2"); // -1
console.log('🤡 CC - 1-2:', 1 - "hello"); // -1


var a = "123";
console.log('🤡 CC - a:', a);
console.log(+a);
console.log(-a);
console.log("1 + a:", 1 + a);
console.log("1 + +a:", 1 + +a);
console.log("1 + +a:", 1 + -a); // 1 - 123 :-122

var flag = true;
console.log('🤡 CC - +flag:', +flag);
console.log('🤡 CC - -flag:', -flag);
console.log('🤡 CC - +flag == -flag:', +flag == -flag);
console.log('🤡 CC - +flag === -flag:', +flag === -flag);

var num = -6;
console.log('🤡 CC - num:', -num);


var flag = true;

console.log('🤡 CC - !flag:', !flag);
console.log('🤡 CC - !!flag:', !!flag);

if (!isNaN("w")) {
  // 是数字
}

// !
!""
var s = "";
console.log('🤡 CC - typeof s:', typeof s);
console.log(`🤡 CC - !s:`, !s);
// !空字符串转boolean true

var s = "123";
console.log('🤡 CC - typeof s:', typeof s);
console.log(`🤡 CC - !s:`, !s);
// !非空字符串转boolean false
// if(!"123"){

// }

// 数字
var num = 0;
console.log(`🤡 CC - !num:`, !num);
// null
var flag = undefined;
console.log(`🤡 CC - !flag:`, !flag);

// ++
for (var i = 0; i < 10; i++) {

}
var num = 0;
var a = num++;
console.log('🤡 CC - a:', a); // 0
console.log('🤡 CC - num:', num); // 1

// i++;
// ++i;

var obj = {
  name: "zs",
  age: 18,
}
console.log('🤡 CC - obj:', obj);
delete obj.name;
console.log('🤡 CC - obj:', obj);

var arr = [1, 2, 3];
console.log('🤡 CC - arr:', arr);
delete arr[2];
delete arr[1];
console.log('🤡 CC - arr:', arr);

// typeof undefined
console.log('🤡 CC - typeof null:', typeof null);
// "123" == 123
// "true" == false
console.log(`🤡 CC - "true" == false:`, "true" == false);
console.log(`🤡 CC - "false" == false:`, "false" == false);
console.log(`🤡 CC - "123" == 123:`, "123" == 123);

var obj = {};
obj = null;
var flag = null;

// typeof flag;
console.log('🤡 CC - typeof flag:', typeof flag);
console.log('🤡 CC - typeof obj:', typeof obj);
console.log('🤡 CC - obj == flag:', obj == flag);
console.log('🤡 CC - obj === flag:', obj === flag);

var flag = true && true;
console.log('🤡 CC - flag:', flag);
var flag = false && true;
console.log('🤡 CC - flag:', flag);
var flag = true && false;
console.log('🤡 CC - flag:', flag);
var flag = false && false;
console.log('🤡 CC - flag:', flag);

// if ("条件1" && "条件2") {
//   // "条件1"和"条件2"都满足
// }


// 有假则假
console.log(false && "hello");
// 同真则真 第一个表达式为真 结果取决于第二个表达式
console.log(true && "hello");
console.log("hello" && "world");
// false true
// 第一个操作数是 
// null NaN undefined 0 "" false 
// 这些能够转为false的值的时候 直接返回该值
console.log(null && "hello"); // null

// 前后都没有true和false
// null NaN undefined 0 ""
console.log("" && 123);
console.log(0 && null);
console.log(0 || null);
console.log(null || 'hello');
console.log(true || 'hello');
// true
console.log(123 || 234);// 123
// true 
console.log(123 && 234);// 234
var abc = true;
console.log(!null); // true
console.log(!" "); // false
console.log(!100); // false
console.log(!"abc"); // false
console.log(!abc); // false

var age = 10;
var result = age >= 18 ? "成年" : "未成年";
console.log('🤡 CC - result:', result);

age >= 18 ? age > 80 ? "老年人" : "年轻人" : "未成年";

if (age >= 18)
  // 你好
  console.log("成年")
// console.log("成年")
else
  console.log("未成年")

if (age > 80) {
  console.log("老年人")
} else if (age > 50) {
  console.log("中年人")
} else if (age > 18) {
  console.log("成年人")
} else {
  console.log("未成年人")
}

var num = 1;
// 如果num = 1; 输出星期一
// 如果num = 2; 输出星期二
// 。。。
// 如果num = 7; 输出星期日
